package com.awspaas.user.apps.cpq.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;

@Controller
public class CPQController {
/**
 * 项目报价清单申请流程中，选择所需系统时，点击确认将选择系统中的模块信息带入到模块信息子表中。
 * @param userContext
 * @param bindId
 * @param systemBHs  系统编号
 * @return
 */
	@Mapping("com.awspaas.user.apps.cpq.getModuleMsg")
    public String getModuleMsg(UserContext userContext, String bindId,String systemBHs) {
		CPQWeb web=new CPQWeb();
		String ro=web.getModuleMsg(userContext, bindId,systemBHs);
		return ro;
	}
	/**
	 * 项目报价清单申请流程中，选择模块详情信息表中的选定型号时，点击确认将选择模块信息带入到模块信息子表中，并计算出该模块的数量和成本价格体积重量等信息。
	 * @param userContext
	 * @param bindId
	 * @param mkbh
	 * @param id
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getModuleNumber")
    public String getModuleNumber(UserContext userContext, String bindId,String mkbh,String id,String datas) throws Exception {
		//CPQ_GetModuleNumberWeb web=new CPQ_GetModuleNumberWeb();
		CPQ_GetModuleNumberNewWeb web=new CPQ_GetModuleNumberNewWeb();
		String ro=web.getModuleNumber(userContext, bindId,mkbh,id,datas);
		return ro;
	}
	@Mapping("com.awspaas.user.apps.cpq.getTransportPrice")
    public String getTransportPrice(UserContext userContext, String bindId) throws Exception {
		CPQ_GetTransportPriceWeb web=new CPQ_GetTransportPriceWeb();
		String ro=web.getTransportPrice(userContext, bindId);
		return ro;
	}
	@Mapping("com.awspaas.user.apps.cpq.getPDFFiles")
    public String getPDFFiles(UserContext userContext, String bindId) throws Exception {
		CPQ_GetPDFFilesWeb web=new CPQ_GetPDFFilesWeb();
		String ro=web.getPDFFiles(userContext, bindId);
		return ro;
	}
	/**
	 * 项目报价申请单中，获取参数配置页面
	 * @param userContext
	 * @param MKBH
	 * @param bindId
	 * @param MKMC
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getParameterHtmlPage")
    public String getParameterHtmlPage(UserContext userContext,String MKBH, String bindId,String boName,String MKMC) throws Exception {
		CPQ_GetParameterHtmlPage web=new CPQ_GetParameterHtmlPage();
		String ro=web.getParameterHtmlPage(userContext,MKBH, bindId, boName,MKMC);
		 Map<String, Object> macroLibraries = new HashMap<String, Object>();
	        macroLibraries.put("data", ro);
	        macroLibraries.put("sid", userContext.getSessionId());
	        return HtmlPageTemplate.merge("com.awspaas.user.apps.cpq", "demo.html", macroLibraries);

	}
	/**
	 * 创建模块清单时，对物料明细中的人工费进行计算。
	 * @param userContext
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.laborCost")
    public String getLaborCost(UserContext userContext, String bindId,String datas, String dataId) throws Exception {
		CPQ_GetLaborCostWeb web=new CPQ_GetLaborCostWeb();
		String ro=web.getLaborCost(userContext, bindId,datas,dataId);
		return ro;
	}
	/**
	 * 创建模块清单时，对物料明细中选择材料时，如果选择的材料的重量是需要动态计算，则打开参数页面进行，参数值填写，进行重量计算。
	 * @param userContext
	 * @param jsgs
	 * @param clmc
	 * @param clbm
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getWeightHtml")
    public String getWeightHtml(UserContext userContext, String jsgs,String clmc, String clbm) throws Exception {
		CPQ_GetWeightHtmlWeb web=new CPQ_GetWeightHtmlWeb();
		String ro=web.getWeightHtml(userContext, jsgs,clmc,clbm);
		 Map<String, Object> macroLibraries = new HashMap<String, Object>();
	        macroLibraries.put("data", ro);
	        macroLibraries.put("sid", userContext.getSessionId());
	        return HtmlPageTemplate.merge("com.awspaas.user.apps.cpq", "demo.html", macroLibraries);
	}
	/**
	 * 在模块中创建物料时，如果选择的材料的重量是需要动态计算，则需要根据填写的参数值进行材料重量计算
	 * @param userContext
	 * @param bindId
	 * @param clbm
	 * @param id
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getWeightNumber")
    public String getWeightNumber(UserContext userContext, String bindId,String clbm,String id,String datas) throws Exception {
		CPQ_GetWeightNumberWeb web=new CPQ_GetWeightNumberWeb();
		String ro=web.getWeightNumber(userContext, bindId,clbm,id,datas);
		return ro;
	}


	/**
	 * 在模块清单台账中，创建新版本模块和创建新模块时调用该请求
	 * @param userContext
	 * @param bindId
	 * @param clbm
	 * @param id
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getNewModel")
    public String getWeightNumber(UserContext userContext, String bindId,String type) throws Exception {
		CPQ_GetNewModelWeb web=new CPQ_GetNewModelWeb();
		String ro=web.getNewModel(userContext, bindId,type);
		return ro;
	}
	/**
	 * 在物料单价维护台账中，创建物料时，如果选择的材料的重量是需要计算的，则根据公式进行计算。
	 * @param userContext
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getPlasticWeight")
    public String getPlasticWeight(UserContext userContext, String bindId,String datas) throws Exception {
		CPQ_GetPlasticWeightWeb web=new CPQ_GetPlasticWeightWeb();
		String ro=web.getPlasticWeight(userContext, bindId,datas);
		return ro;
	}
	/**
	 * 自动报价模块中的物料、模块、工资价格、外协价格、材料价格等台账数据的启用和停用
	 * @param userContext
	 * @param rowData
	 * @param boName
	 * @param type
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.changeStatus")
    public String changeStatus(UserContext userContext, String rowData,String boName,String type) throws Exception {
		CPQ_ChangeStatusWeb web=new CPQ_ChangeStatusWeb();
		String ro=web.changeStatus(userContext, rowData,boName,type);
		return ro;
	}
	/**
	 * 物料单价台账中选择一条数据后进行创建新的物料数据。
	 * @param userContext
	 * @param bindId
	 * @param type
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getNewComponent")
    public String changeStatus(UserContext userContext, String bindId,String type) throws Exception {
		CPQ_GetNewComponentWeb web=new CPQ_GetNewComponentWeb();
		String ro=web.getNewComponent(userContext,bindId,type);
		return ro;
	}
	/**
	 * 物料单价台账中，选择数据后点击按钮更新物料价格、项目报价标准模板价格、装配件信息。
	 * @param userContext
	 * @param rowData
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.refreshModelPrice")
    public String refreshModelPrice(UserContext userContext, String rowData) throws Exception {
		CPQ_RefreshModelPriceWeb web=new CPQ_RefreshModelPriceWeb();
		String ro=web.refreshModelPrice(userContext,rowData);
		return ro;
	}
	/**
	 * 项目报价标准模板台账中，创建标准模板时，选择对应的系统后，将系统中的所涉及的模块信息根据项目类型和产品型号进行过滤，并回写到子表中
	 * @param userContext
	 * @param bindId
	 * @param systemBHs
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getTemplateModuleMsg")
    public String getTemplateModuleMsg(UserContext userContext, String bindId,String xmlx,String cpxh,String systemBHs) throws Exception {
		CPQ_GetTemplateModuleMsgWeb web=new CPQ_GetTemplateModuleMsgWeb();
		String ro=web.getTemplateModuleMsg(userContext,bindId,xmlx,cpxh,systemBHs);
		return ro;
	}
	/**
	 * 项目报价标准模板台账中，创建标准模板时，在模块明细表中选择模块时，弹出该模块所要的参数，并填写参数值后，进行模块的数量和单价计算，并将数据回写到模块子表和参数子表中。
	 * @param userContext
	 * @param bindId
	 * @param mkbh
	 * @param id
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getTemplateModuleNumber")
    public String getTemplateModuleNumber(UserContext userContext, String bindId,String mkbh,String id,String datas) throws Exception {
		CPQ_GetTemplateModuleNumberWeb web=new CPQ_GetTemplateModuleNumberWeb();
		String ro=web.getTemplateModuleNumber(userContext,bindId,mkbh,id,datas);
		return ro;
	}
	/**
	 * 项目报价标准模板台账中，创建标准模板时，点击计算模块数量按钮，进行模块的数量和单价计算，并将数据回写到模块子表。
	 * @param userContext
	 * @param bindId
	 * @param mkbh
	 * @param id
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getTemplateAllModuleNumber")
    public String getTemplateAllModuleNumber(UserContext userContext, String bindId,String cs,String datas) throws Exception {
		CPQ_GetTemplateAllModuleNumberWeb web=new CPQ_GetTemplateAllModuleNumberWeb();
		String ro=web.getTemplateAllModuleNumber(userContext,bindId,cs,datas);
		return ro;
	}
	/**
	 * 项目报价模板中点击计算单栋设备价格按钮，将所涉及的系统价格进行汇总计算，并将得出的数据回写到子表中。
	 * @param userContext
	 * @param bindId
	 * @param type
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getTemplateSystemPrice")
    public String getTemplateSystemPrice(UserContext userContext, String bindId) throws Exception {
		CPQ_GetTemplateSystemPriceWeb web=new CPQ_GetTemplateSystemPriceWeb();
		String ro=web.getTemplateSystemPrice(userContext,bindId);
		return ro;
	}
	/**
	 * 项目报价标准模板台账中，创建标准模板时，点击计算安装费按钮，弹出安装费模板表单，并将相关信息带入模板表单中。
	 * @param userContext
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getInstallationFee")
    public String getInstallationFee(UserContext userContext, String bindId) throws Exception {
		CPQ_GetInstallationFeeWeb web=new CPQ_GetInstallationFeeWeb();
		String ro=web.getInstallationFee(userContext,bindId);
		return ro;
	}
	/**
	 * 项目报价标准模板台账中，点击创建新版本和创建新模板按钮，弹出新的项目报价模板表单，并将勾选数据相关信息带入模板表单中。
	 * @param userContext
	 * @param bindId
	 * @param type
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getNewTemplatePrice")
    public String getNewTemplatePrice(UserContext userContext, String bindId,String type) throws Exception {
		CPQ_GetNewTemplatePriceWeb web=new CPQ_GetNewTemplatePriceWeb();
		String ro=web.getNewTemplatePrice(userContext,bindId,type);
		return ro;
	}
	/**
	 * 安装费模板台账中，点击创建新模板按钮，如果选择有数据，则将该数据带入新建的表单中，如果没有勾选数据则创建新的安装费模板
	 * @param userContext
	 * @param bindId
	 * @param type
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getNewInstallationFee")
    public String getNewInstallationFee(UserContext userContext, String bindId,String type) throws Exception {
		CPQ_GetNewInstallationFeeWeb web=new CPQ_GetNewInstallationFeeWeb();
		String ro=web.getNewInstallationFee(userContext,bindId,type);
		return ro;
	}
	/**
	 *  安装费模板表单中，选择系统配置后，将选择的系统中的安装工序数据回写到子表中，并将系统中的参数信息回写到子表中。
	 * @param userContext
	 * @param bindId
	 * @param xmlx
	 * @param cpxh
	 * @param systemBHs
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getInstallationFeeSystem")
    public String getInstallationFeeSystem(UserContext userContext, String bindId,String xmlx,String cpxh,String systemBHs) throws Exception {
		CPQ_GetInstallationFeeSystemWeb web=new CPQ_GetInstallationFeeSystemWeb();
		String ro=web.getInstallationFeeSystem(userContext,bindId,xmlx,cpxh,systemBHs);
		return ro;
	}
	/**
	 * 安装费模板表单中，点击获取参数信息，将根据项目类型和产品型号获取对应的项目报价模板中的参数信息，并回写到安装费模板的参数信息子表中
	 * @param userContext
	 * @param bindId
	 * @param xmlx
	 * @param cpxh
	 * @param systemBHs
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getTemplateSystemMsg")
    public String getTemplateSystemMsg(UserContext userContext, String bindId,String xmlx,String cpxh,String dzsm) throws Exception {
		CPQ_GetTemplateSystemMsgWeb web=new CPQ_GetTemplateSystemMsgWeb();
		String ro=web.getTemplateSystemMsg(userContext,bindId,xmlx,cpxh, dzsm);
		return ro;
	}
	/**
	 * 安装费模板表单中，点击计算设备安装费按钮，通过参数信息进行计算每个设备的安装费，并回写到子表中。
	 * @param userContext
	 * @param bindId
	 * @param cs
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getInstallationFeeAllModuleNumber")
    public String getInstallationFeeAllModuleNumber(UserContext userContext, String bindId,String cs,String datas) throws Exception {
		CPQ_GetInstallationFeeAllModuleNumberWeb web=new CPQ_GetInstallationFeeAllModuleNumberWeb();
		String ro=web.getInstallationFeeAllModuleNumber(userContext,bindId,cs,datas);
		return ro;
	}
	/**
	 * 项目报价记录台账中，点击新建报价按钮，打开该用户可以查看的项目类型页面，用户选择需要创建的报价类型，点击确认后，打开项目报价申请单。
	 * @param userContext
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getProjectHtmlPage")
    public String getProjectHtmlPage(UserContext userContext,String uid) throws Exception {
		CPQ_GetProjectHtmlPage web=new CPQ_GetProjectHtmlPage();
		String ro=web.getProjectHtmlPage(userContext,uid);
		 Map<String, Object> macroLibraries = new HashMap<String, Object>();
	        macroLibraries.put("data", ro);
	        macroLibraries.put("sid", userContext.getSessionId());
	        return HtmlPageTemplate.merge("com.awspaas.user.apps.cpq", "project.html", macroLibraries);

	}
	/**
	 * 项目报价记录台账中，点击新建报价按钮后，打开项目类型选择模板页面，点击页面上的确认按钮后，系统自动带出所选的项目类型模板信息。
	 * @param userContext
	 * @param bindId
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getNewProjectMsg")
    public String getNewProjectMsg(UserContext userContext,String datas) throws Exception {
		CPQ_GetNewProjectMsgWeb web=new CPQ_GetNewProjectMsgWeb();
		String ro=web.getNewProjectMsg(userContext,datas);
		return ro;
	}
	/**
	 * 项目报价记录台账中，在项目报价申请表单中点击计算模块价格按钮，系统自动计算出模块的数量和价格。
	 * @param userContext
	 * @param bindId
	 * @param cs
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getAllModuleNumber")
    public String getAllModuleNumber(UserContext userContext, String bindId,String cs,String datas) throws Exception {
		BO data=SDK.getBOAPI().query("BO_EU_CPQ_PROJECT_MSG").bindId(bindId).detail();
		String type=data.getString("SFWMB");
		if(type.equals("否")) {
			CPQ_GetAllRecordModuleNumberWeb web=new CPQ_GetAllRecordModuleNumberWeb();
			String ro=web.getAllModuleNumber(userContext,bindId,cs,datas);
			return ro;
		}else {
			CPQ_GetAllModuleNumberWeb web=new CPQ_GetAllModuleNumberWeb();
			String ro=web.getAllModuleNumber(userContext,bindId,cs,datas);
			return ro;
		}

	}
	/**
	 * 项目报价申请表单中，点击计算设备安装费按钮，通过参数信息进行计算每个设备的安装费，并回写到子表中。
	 * @param userContext
	 * @param bindId
	 * @param cs
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getIFAllModuleNumber")
    public String getIFAllModuleNumber(UserContext userContext, String bindId,String cs,String datas) throws Exception {
		CPQ_GetIFAllModuleNumberWeb web=new CPQ_GetIFAllModuleNumberWeb();
		String ro=web.getIFAllModuleNumber(userContext,bindId,cs,datas);
		return ro;
	}
	/**
	 * 项目报价申请单中点击计算单栋设备价格按钮，将所涉及的系统价格、安装费、运输费进行汇总计算，并将得出的数据回写到子表中。
	 * @param userContext
	 * @param bindId
	 * @param type
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getSystemPrice")
    public String getSystemPrice(UserContext userContext, String bindId,String type) throws Exception {
		CPQ_GetSystemPriceWeb web=new CPQ_GetSystemPriceWeb();
		String ro=web.getSystemPrice(userContext,bindId,type);
		return ro;
	}
	/**
	 * 在原材料价格维护台账中，选择原材料后，点击更新物料价格按钮，将对所有涉及的该原材料的物料、模块、项目报价模板进行更新。
	 * @param userContext
	 * @param rowData
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.porpertiesRefreshPrice")
    public String porpertiesRefreshPrice(UserContext userContext, String rowData) throws Exception {
		CPQ_PorpertiesRefreshPriceWeb web=new CPQ_PorpertiesRefreshPriceWeb();
		String ro=web.porpertiesRefreshPrice(userContext,rowData);
		return ro;
	}
	/**
	 * 项目报价记录台账中，勾选一条数据后点击引用报价按钮，以条数据的信息创建新的报价申请记录数据
	 * @param userContext
	 * @param rowData
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getNewProject")
	public String getNewProject(UserContext userContext,String type ,String bindId) throws Exception {
			CPQ_GetNewProjectWeb web=new CPQ_GetNewProjectWeb();
			String ro=web.getNewProject(userContext,type,bindId);
			return ro;
		}
	/**
	 * 模块创建时，对物料明细表中的物料数量根据填写的公式进行计算，如果数量不对则公式填写错误。
	 * @param userContext
	 * @param bindId
	 * @param cs
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getAllComponentNumber")
    public String getAllComponentNumber(UserContext userContext, String bindId,String cs,String datas) throws Exception {
		CPQ_GetAllComponentNumberWeb web=new CPQ_GetAllComponentNumberWeb();
		String ro=web.getAllComponentNumber(userContext,bindId,cs,datas);
		return ro;
	}
 	 /** 在工资价格价格维护台账中，选择工种，点击更新物料价格按钮，将对所有涉及的该工种的物料、模块、项目报价模板进行更新。
	 * @param userContext
	 * @param rowData
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.wageRateRefreshPrice")
	public String wageRateRefreshPrice(UserContext userContext, String rowData)throws Exception{
		CPQ_WageRateRefreshPriceWeb web=new CPQ_WageRateRefreshPriceWeb();
		String ro=web.wageRateRefreshPrice(userContext,rowData);
		return ro;
	}
	/**
	 * 在外协价格维护台账中，选择数据后，点击更新物料价格按钮，将对所有涉及的该外协的物料、模块、项目报价模板进行更新。
	 * @param userContext
	 * @param rowData
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.outsourcingRefreshPrice")
	public String outsourcingRefreshPrice(UserContext userContext, String rowData)throws Exception{
		CPQ_outsourcingRefreshPriceWeb web=new CPQ_outsourcingRefreshPriceWeb();
		String ro=web.outsourcingRefreshPrice(userContext,rowData);
		return ro;
	}
	/**
	 * 安装工序清单台账中，选择数据后，点击更新物料价格按钮，将对所有涉及的该安装工序的项目报价模板进行更新。
	 * @param userContext
	 * @param rowData
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.installationRefreshPrice")
	public String installationRefreshPrice(UserContext userContext,String type, String rowData)throws Exception{
		CPQ_installationRefreshPriceWeb web=new CPQ_installationRefreshPriceWeb();
		String ro=web.installationRefreshPrice(userContext,type,rowData);
		return ro;
	}
	/**
	 * 获取项目报价费用信息，展示报表页面。
	 * @param userContext
	 * @param rowData
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.echartsHtmlPage")
	//&CLF=&RGF=&WXWG=&CGF=&ZZF=&XMCBYS=&LRJE=&SBSJ=&AZF=&AZFLRJE=&AZFSJ=&YSFY=&GLF=&QTFYGDJE=&XMZBJ=
	public String getEchartsHtmlPage(UserContext userContext, String CLF,String RGF,String WXWG,String CGF,
			String ZZF,String XMCBYS,String LRJE,String SBSJ,String AZF,String AZFLRJE,String AZFSJ,String YSFY,
			String GLF,String QTFYGDJE,String XMZBJ,String others)throws Exception{
		CPQ_getEchartsHtmlPageWeb web=new CPQ_getEchartsHtmlPageWeb();
                 String          ro=web.getEchartsHtmlPage(userContext,CLF,RGF,WXWG,CGF,ZZF,XMCBYS,LRJE,SBSJ,AZF,AZFLRJE,AZFSJ,YSFY,GLF,QTFYGDJE,XMZBJ,others);
		 Map<String, Object> macroLibraries = new HashMap<String, Object>();
	        macroLibraries.put("data", ro);
	        macroLibraries.put("sid", userContext.getSessionId());
		 return HtmlPageTemplate.merge("com.awspaas.user.apps.cpq", "pie.html", macroLibraries);
	}
	/**
	 * 项目报价申请单中，点击生成报价文档按钮，将对销售提供的报价单excel文件中的系统进行价格赋值。
	 * @param userContext
	 * @param bindId
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getExcelFile")
	public String getExcelFile(UserContext userContext, String bindId,String datas)throws Exception{
		CPQ_getExcelFileWeb web=new CPQ_getExcelFileWeb();
		String ro=web.getExcelFile(userContext,bindId,datas);
		return ro;
	}
	/**
	 * 项目报价记录台账中，模板的发布、变更、停用，项目报价的审批和配件报价的审批，需要走项目报价审批流程，领导审批通过后，才能进行报价。
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.updatePriceStatus")
	public String updatePriceStatus(UserContext userContext, String type,String bindId)throws Exception{
		CPQ_UpdatePriceStatusWeb web=new CPQ_UpdatePriceStatusWeb();
		String ro=web.updatePriceStatus(userContext,type,bindId);
		return ro;
	}
	/**
	 * 项目报价记录台账中，模板的发布、变更、停用，项目报价的审批和配件报价的审批，需要走项目报价审批流程，领导审批通过后，才能进行报价。
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.sendMsgToRabbitMQ")
	public String sendMsgToRabbitMQ(UserContext userContext,String bindId, String rowData)throws Exception{
		CPQ_sendMsgToRabbitMQWeb web=new CPQ_sendMsgToRabbitMQWeb();
		String ro=web.sendMsgToRabbitMQ(userContext,bindId,rowData);
		return ro;
	}
	/**
	 * 物料单价表中，点击编辑按钮后，将该条数据的编辑状态字段的值改为编辑中。
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.updateStatus")
	public String updateStatus(UserContext userContext,String bindId,String type)throws Exception{
	    try {
	    	if(type.equals("0")) {
	    		 SDK.getBOAPI().updateByBindId("BO_EU_CPQ_COMPONENT_PART", bindId,"TS", "编辑中");
	    	}else if (type.equals("1")) {
	    		SDK.getBOAPI().updateByBindId("BO_EU_CPQ_COMPONENT_PART", bindId,"TS", "可编辑");
			}

	    	ResponseObject ro = ResponseObject.newOkResponse();
			return ro.toString();
		} catch (Exception e) {
			throw e;
		}

	}
	/**com.awspaas.user.apps.cpq.getPriceMsgWL
	 * 项目申请单中，点击直发物资运费明细表中的计算直发物资运费，对直发物资运费进行计算。
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getTransportNumber")
	public String updateStatus(UserContext userContext,String bindId,String cs ,String datas )throws Exception{
	    try {
	    	CPQ_GetTransportNumberWeb web=new CPQ_GetTransportNumberWeb();
			String ro=web.getTransportNumber(userContext,bindId,cs,datas);
			return ro;
		} catch (Exception e) {
			throw e;
		}

	}
	/**
	 * 项目申请单中，点击直发物资运费明细表中的计算直发物资运费，对直发物资运费进行计算。
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getPriceMsgWL")
	public String getPriceMsgWL(UserContext userContext,String bindId,String datas  )throws Exception{
	    try {
	    	CPQ_GetPriceMsgWLWeb web=new CPQ_GetPriceMsgWLWeb();
			String ro=web.getPriceMsgWL(userContext,bindId,datas);
			return ro;
		} catch (Exception e) {
			throw e;
		}

	}
	/**
	 * 项目模板创建时，点击模块编号，打开该模块编号的模块配置信息。
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getMouleMsgs")
	public String getMouleMsgs(UserContext userContext,String bindId,String datas,String type,String dz  )throws Exception{
	    try {
	    	CPQ_GetgetMouleMsgWeb web=new CPQ_GetgetMouleMsgWeb();
			String ro=web.getMouleMsg(userContext,bindId,datas,type,dz);
			return ro;
		} catch (Exception e) {
			throw e;
		}

	}
	/**
	 * 项目模板创建时，点击模块编号，打开该模块编号的模块配置信息后，修改参数子表的值后点击确认按钮，将改模块的单价和数量计算一遍并回写到模板的该模块信息子表中。如果存在
	 * 参数信息与模板中的参数信息值不一样则需要将模板中相关参数的模块单价和数量重新计算一次。如果参数在模板参数子表中没有，则需要创建该参数信息在模板参数子表中。
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.updateMouleMsgs")
	public String updateMouleMsgs(UserContext userContext,String pid,String bindId,String datas,String rowData ,String type )throws Exception{
	    try {
	    	CPQ_UpdateMouleMsgsWeb web=new CPQ_UpdateMouleMsgsWeb();
			String ro=web.updateMouleMsgs(userContext,pid,bindId,datas,rowData,type);
			return ro;
		} catch (Exception e) {
			throw e;
		}

	}
	/**
	 *模块记录清单中，点击计算直发物资按钮对直发物资的数量进行计算
	 *
	 * @param userContext
	 * @param type
	 * @param bindId
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getRecordTransportNumber")
	public String getRecordTransportNumber(UserContext userContext,String bindId,String cs ,String datas )throws Exception{
	    try {
	    	CPQ_GetRecordTransportNumberWeb web=new CPQ_GetRecordTransportNumberWeb();
			String ro=web.getRecordTransportNumber(userContext,bindId,cs,datas);
			return ro;
		} catch (Exception e) {
			throw e;
		}

	}
	/**
	 * 模块记录清单中，对物料明细表中的物料数量根据填写的公式进行计算，如果数量不对则公式填写错误。
	 * @param userContext
	 * @param bindId
	 * @param cs
	 * @param datas
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getAllRecordComponentNumber")
    public String getAllRecordComponentNumber(UserContext userContext, String bindId,String cs,String datas) throws Exception {

		CPQ_GetAllRecordComponentNumberWeb web=new CPQ_GetAllRecordComponentNumberWeb();
		String ro=web.getAllRecordComponentNumber(userContext,bindId,cs,datas);
		return ro;
	}
	/**
	 * 模块清单中，对模块数量根据填写的公式进行计算，如果数量不对则公式填写错误。
	 * @param userContext
	 * @param bindId
	 * @param cs
	 * @param gs
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.getModuleNumbers")
    public String getModuleNumbers(UserContext userContext, String bindId,String cs,String gs) throws Exception {

		CPQ_GetModuleNumbersWeb web=new CPQ_GetModuleNumbersWeb();
		String ro=web.getModuleNumbers(userContext,bindId,cs,gs);
		return ro;
	}

	/**
	 * 报价模板、报价记录回收 撤回功能
	 * @param userContext
	 * @param rowData
	 * @param boName
	 * @param type
	 * @return
	 * @throws Exception
	 */
	@Mapping("com.awspaas.user.apps.cpq.changeDeleteStatus")
	public String changeDeleteStatus(UserContext userContext, String rowData,String boName,String type) throws Exception {
		CPQ_ChangeStatusWeb web=new CPQ_ChangeStatusWeb();
		String ro=web.changeDeleteStatus(userContext, rowData,boName,type);
		return ro;
	}

}
